Child tool functionality
Instances of tools registered with supportChildTools=true (see
Tool Registration Arguments) can be parents to other tool
instances. Parent instances can pass a Transform or
Image to child tools.
The parent/child relationship is useful for image filter- and locator tools. For accessing arbitrary results, result references should be used instead.
Changing the image (filter tools)
To pass a modified image to child-tools, add an Image crown
instance to output with the name “Image” inside the execute
function.
This example adds an inverted copy of the image:
output:add("Image", input:getImage():invert())
A child to a tool with an “Image”-result will get the modified image
from input:getImage(). This can be used to
implement tools that act as image filters.
When a tool that sets the “Image”-result or one of its children is selected in the user interface, the resulting image will be shown in the Image view.
Note
The Image result does not need to be declared in the call to
Tool.register.
Specifying a transform (locator tools)
To pass a transform to child tools, call
output:setTransform2D()
or output:setTransform3D()
with a Transform crown instance as argument inside the
execute function.
This example adds a transform that shifts regions a bit:
local transform = Transform.createFromMatrix2D(Matrix.createFromVector(
{1, 0, 10,
0, 1, 20,
0, 0, 1}, 3, 3))
output:setTransform2D(transform)
A child to a tool that sets the “Transform”-result will get its source
regions transformed by that transform from
input:getTransformedRegion().
This can be used to create “locator”-tools that locate a feature in
the image for relative placement of regions for child tools.